/**
 * @author huangfeng
 * @class Ext.ux.tree.MenuTree
 * 含有checkbox的树状菜单
 * @constructor
 * @param {Object} config中的参数
 * el					必输入<br>
 * dataUrl				必输入<br>
 * rootId				默认值为0<br>
 * title				标题<br>
 * iconCls				图片背景类<br>
 * icon					图片地址<br>
 * dblclick:object		双击节点的函数<br>
 */
Ext.ux.MenuTree=function(config){	
	/**
	 * 树加载节点的对象
	 * @param 	myTreeLoader
	 * @type 	Ext.tree.TreeLoader
	 */
	this.myTreeLoader=new Ext.tree.TreeLoader({
			dataUrl:config.dataUrl					//树跟节点加载数据地址
	});
	
	Ext.ux.MenuTree.superclass.constructor.call(this,{
		//el:config.el,
		animate:true,
		enableDD:true,								//拖动参数
		title:config.title,							//标题
		iconCls:config.iconCls,						//标题图片css类
		autoScroll:true,							//滚动条参数
		useArrows:true,								//箭头参数
		containerScroll:true,						//树的容器的滚动条
		dropConfig: {appendOnly:true},				//放的参数
		root:new Ext.tree.AsyncTreeNode({			//树根的参数
			expanded: true,								//根是否展开的参数
			id:config.rootId||'0'						//根的id
		}),
		rootVisible:false,							//树根是否可见的参数
		loader:this.myTreeLoader							//加载数据的参数
	});//end Ext.ux.MenuTree.superclass.constructor.call
   	
    //new Ext.tree.TreeSorter(this,{folderSort:true});//排序
	
    
    
    this.contextmenu=new Ext.menu.Menu({				//右键菜单
		id:'refresh',		
		items:[{
			text:'刷新',
			iconCls:'left-menu-refresh',
			handler:this.refresh.createDelegate(this)
		}]
	});//end Ext.menu.Menu
	
	/**
	 * 如果有图片地址，则触发'render'事件
	 */
	if(config.icon){	
		this.on('render',function(element){
			var selectorPara="*[class="+"x-panel-inline-icon icon_"+this.root.id+"]";
			var element=Ext.DomQuery.select(selectorPara)[0];
			if(element){
				element.style.background=config.icon;
			}
		});
	}
	
	/**
	 * 鼠标右键菜单
	 */
	this.on('contextmenu',function(node,e){
		e.stopEvent();					//禁止默认菜单弹出
		node.select();						//选择当前节点
		this.contextmenu.showAt(e.getXY());
	},this);
	
	/**
	 * 单击节点事件
	 */
	if(config.click!=undefined){
	  	this.on({
			'click':config.click
		})
  	}
}

Ext.extend(Ext.ux.MenuTree, Ext.tree.TreePanel,{
	/**
	 * 展开根节点
	 * @return 			返回根节点
	 */
	expandRoot:function(){
		this.root.expand();
		return this.root;
	},
	refresh:function(){
		var loadScope = this.getSelectionModel().getSelectedNode();
		this.getLoader().load(loadScope,function(treeLoader, node){
			node.expand();
		});
		this.contextmenu.hide();
	}
});